package com.bawei.newsapplication.view.fragment
import android.content.Intent
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import coil.load
import com.ayvytr.adapter.smart
import com.bawei.coom.model.bean.domm.VideoListBean
import com.bawei.coom.model.myapp.MyAPP
import com.bawei.newsapplication.R
import com.bawei.newsapplication.base.BaseFragment
import com.bawei.newsapplication.databinding.FragmentVideoBinding
import com.bawei.newsapplication.view.activity.quanmingpai.VideoPlayDetailActivity
import com.bawei.newsapplication.view.activity.video.VideoPlayActivity
import com.bawei.newsapplication.viewmodel.VideoListViewModel
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayout.OnTabSelectedListener
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer

/**
 * 作者: 谢庆平
 * 时间: 2024/10/18 15:31
 * 描述:视频界面
 *
 * 以下是对热点新闻所包含的 “首页”“热点视频”“全民拍”“问答”“我的（登录和微信登录）” 各板块的介绍：
 *  * 首页：
 *  * 内容呈现：这是热点新闻平台的门面和核心展示区域。通常会将最重要、最热门、
 *  * 最具时效性的新闻资讯以多种形式呈现出来，比如头条新闻会以大标题、醒目的图片等方式突出展示，
 *  * 方便用户第一时间获取关键信息。新闻的来源广泛，包括专业的新闻媒体机构、记者采写的报道，
 *  * 以及一些经过筛选的自媒体或其他渠道的优质内容。
 *  * 功能特点：具备综合性和导航性。一方面，它整合了各种类型的热点新闻，如政治、经济、社会、文化、科技、体育等领域
 *  * 的重大事件和突发新闻，满足不同用户的信息需求；另一方面，首页还会设置分类导航、热门话题标签等，
 *  * 方便用户快速找到自己感兴趣的新闻类别或特定主题的新闻报道。
 *  * 热点视频：
 *  * 内容来源：该板块主要汇聚了与热点新闻相关的视频内容。
 *  * 这些视频的来源包括新闻媒体机构制作的新闻视频报道、现场目击者拍摄的视频素材、
 *  * 专业视频创作者根据热点新闻事件创作的解读或评论视频等。比如一些重大事件的现场视频、
 *  * 新闻发布会的视频记录、专家对热点事件的分析视频等。
 *  * 呈现形式：以视频的形式生动、直观地展现新闻内容，
 *  * 相比文字和图片更具感染力和冲击力。视频的时长不一，既有简短的新闻快讯视频，
 *  * 也有较为深入的专题视频报道。用户可以通过播放、暂停、快进、快退等操作来观看视频，
 *  * 还可以在视频下方查看相关的文字介绍、评论和点赞等信息。
 *  * 全民拍：
 *  * 平台性质：是一个鼓励广大民众参与新闻素材提供和新闻事件分享的互动平台。普通民众可以使用手机或其他摄影设备，拍摄身边发生的新闻事件、社会现象、有趣的场景等，并通过该平台上传分享。
 *  * 作用意义：一方面，它为新闻媒体提供了丰富的新闻素材来源，拓宽了新闻的采集渠道，使新闻更加贴近生活、贴近群众；另一方面，也为民众提供了一个表达自己观点、参与新闻传播的机会，
 *  增强了民众的新闻参与感和社会责任感。
 *  * 问答：
 *  * 问题类型：这里集中了用户关于热点新闻的各种疑问和探讨。
 *  * 问题可能涉及对新闻事件的背景、原因、影响的询问，对新闻中涉及的专业知识或法律问题的求解，
 *  * 对不同观点的争论等。例如，对于一些复杂的国际局势热点新闻，用户可能会问
 *  * “某地区冲突的根源是什么”“该事件对全球经济会产生怎样的影响” 等问题。
 *  * 互动模式：用户可以提出问题，也可以回答其他用户的问题。
 *  * 这种互动模式促进了用户之间的交流和思想碰撞，有助于更深入地理解热点新闻事件。
 *  * 同时，一些专业的新闻工作者、专家学者或相关领域的从业者也可能会参与到问答中，提供专业的解答和分析，提高问答的质量和权威性。
 *  * 我的（登录和微信登录）：
 *  * 登录功能：用户可以通过账号密码登录或微信登录的方式进入
 *  * “我的” 页面。登录后，系统可以记录用户的个人信息、浏览历史、收藏、点赞、评论等数据，方便用户随时查看和管理自己在热点新闻平台上的活动记录。
 *  * 个性化设置：在该页面中，用户可以根据自己的兴趣和需求进行个性化设置，比如设置新闻推送的频率、类型、时间段等，
 *  * 以便获取更符合自己需求的热点新闻资讯。此外，用户还可以修改个人资料、绑定或解绑第三方账号等。
 */

class VideoFragment : BaseFragment<VideoListViewModel,FragmentVideoBinding>(R.layout.fragment_video) {
//TODO 视频列表适配器
    var videoListAdapter=smart(mutableListOf<VideoListBean.Result>(),R.layout.shipinitem_layout,{
      item, position ->
    //TODO 获取视频播放id
        findViewById<StandardGSYVideoPlayer>(R.id.shipin_video).setUp(item.advertiseUrl,true,item.title)
    //TODO 获取视频标题id
        findViewById<TextView>(R.id.shipin_title).text=item.title
    //TODO 获取图片id
        findViewById<ImageView>(R.id.toxiang).load(item.authorImgUrl)
    //TODO 获取视频作者id
    findViewById<TextView>(R.id.shipin_names).text=item.authorName
    //TODO 判断是否关注
           if (item.focusFlag==1){
               findViewById<Button>(R.id.guanzhus).text="未关注"
           }else{
               findViewById<Button>(R.id.guanzhus).text="已关注"
           }
    //TODO 判断是否收藏
            if (item.collectFlag==1){
                findViewById<ImageView>(R.id.shoucangs).load(R.mipmap.shocang2)
            }else{
                findViewById<ImageView>(R.id.shoucangs).load(R.mipmap.sc2)
        }
    //TODO 获取评论数量
        findViewById<TextView>(R.id.num).text=""+item.commentNum+""
    }){}
        .click { item, position ->
    startActivity(Intent(context, VideoPlayDetailActivity::class.java).apply {
        putExtra("id",item.authorId)
    })
}

    override fun initView() {
        //TODO 获取栏目列表
       mViewModel.getColumnList()

        //TODO 获取视频列表
        mViewModel.getVideoList(MyAPP.userId,MyAPP.token,1001,1,5)


//TODO 点击切换视频数据
        mDataBinding.tabLayout.addOnTabSelectedListener(object :OnTabSelectedListener{
            override fun onTabSelected(tab: TabLayout.Tab) {
                 if (tab.position==0){

                     videoListAdapter.clear()
                     var columnId=1001
                     mViewModel.getVideoList(MyAPP.userId,MyAPP.token,columnId,1,5)
                     mDataBinding.shipinrv.adapter=videoListAdapter
                     mDataBinding.shipinrv.layoutManager=LinearLayoutManager(context)

                 }else if (tab.position==1){

                     videoListAdapter.clear()
                     var columnId=1002
                     mViewModel.getVideoList(MyAPP.userId,MyAPP.token,columnId,1,5)
                     mDataBinding.shipinrv.adapter=videoListAdapter
                     mDataBinding.shipinrv.layoutManager=LinearLayoutManager(context)

                 }else if (tab.position==2){

                     videoListAdapter.   clear()
                     var columnId=1003
                     mViewModel.getVideoList(MyAPP.userId,MyAPP.token,columnId,1,5)
                     mDataBinding.shipinrv.adapter=videoListAdapter
                     mDataBinding.shipinrv.layoutManager=LinearLayoutManager(context)

                 } else if (tab.position==3){

                     videoListAdapter.clear()
                     var columnId=1004
                     mViewModel.getVideoList(MyAPP.userId,MyAPP.token,columnId,1,5)
                     mDataBinding.shipinrv.adapter=videoListAdapter
                     mDataBinding.shipinrv.layoutManager=LinearLayoutManager(context)

                 }else if (tab.position==4){
                     videoListAdapter.clear()
                     var columnId=1005
                     mViewModel.getVideoList(MyAPP.userId,MyAPP.token,columnId,1,5)
                     mDataBinding.shipinrv.adapter=videoListAdapter
                     mDataBinding.shipinrv.layoutManager=LinearLayoutManager(context)
                 }
   
            }
            override fun onTabUnselected(tab: TabLayout.Tab) {

            }
            override fun onTabReselected(tab: TabLayout.Tab) {
            }
        })
        mDataBinding.shipinrv.adapter=videoListAdapter
        mDataBinding.shipinrv.layoutManager=LinearLayoutManager(context)
    }

    override fun dataObserve() {
        //TODO 顶部导航数据
        mViewModel.columnListData.observe(this, Observer {
            it.result.forEach {
                mDataBinding.tabLayout.addTab(mDataBinding.tabLayout.newTab().setText(it.columnName))
            }
        })
        //TODO 视频数据
        mViewModel.videoListData.observe(this, {
            if (it.result!=null){
                videoListAdapter.update(it.result,true)
            }
        })
    }
    override fun onPause() {
        super.onPause()
        mViewModel.getVideoList(MyAPP.userId,MyAPP.token,1001,1,5)
        mDataBinding.shipinrv.adapter=videoListAdapter
        mDataBinding.shipinrv.layoutManager=LinearLayoutManager(context)
    }
}